using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Entidades;

namespace VtasMkt.Marketing.Fidelizacion
{
    public partial class frmActualizarProgramaFidelizacion : Form
    {
        #region Variables y Constantes

        DataTable _dtImp = new DataTable();

        #endregion

        #region Eventos del formulario

            public frmActualizarProgramaFidelizacion()
            {
                InitializeComponent();
            }

            private void btnCerrar_Click(object sender, EventArgs e)
            {
                Close();
            }

            private void btnNuevo_Click(object sender, EventArgs e)
            {
                VtasMkt.Marketing.Fidelizacion.frmActualizarProgramaFidelizacionDet actualizarPrgFidelizacDetWin = new VtasMkt.Marketing.Fidelizacion.frmActualizarProgramaFidelizacionDet();
                actualizarPrgFidelizacDetWin.Tag = AccionMnt.NuevoRegistro;
                actualizarPrgFidelizacDetWin.ShowDialog();
                MostrarInfoGrilla();
            }

            private void btnEliminar_Click(object sender, EventArgs e)
            {
                if (dgvMain.RowCount > 0)
                {
                    Entidades.ProgramaFidelizacion programaFidelizacion = new ProgramaFidelizacion();
                    programaFidelizacion.CodigoPrograma = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                    programaFidelizacion.NombrePrograma = (string)(this.dgvMain.SelectedRows[0].Cells[1].Value);
                    programaFidelizacion.PorcentajeDescuento = (int)(this.dgvMain.SelectedRows[0].Cells[2].Value);
                    programaFidelizacion.FechaInicio = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[3].Value);
                    programaFidelizacion.FechaFin = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[4].Value);
                    programaFidelizacion.DescripcionPrograma = (string)(this.dgvMain.SelectedRows[0].Cells[5].Value);
                    programaFidelizacion.SignoComparacionCriterio = (string)(this.dgvMain.SelectedRows[0].Cells[6].Value);
                    programaFidelizacion.MontoCriterio = (decimal)(this.dgvMain.SelectedRows[0].Cells[7].Value);
                    programaFidelizacion.FechaInicioCriterio = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[8].Value);
                    programaFidelizacion.FechaFinCriterio = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[9].Value);

                    VtasMkt.Marketing.Fidelizacion.frmActualizarProgramaFidelizacionDet actualizarPrgFidelizacDetWin = new VtasMkt.Marketing.Fidelizacion.frmActualizarProgramaFidelizacionDet(programaFidelizacion);
                    actualizarPrgFidelizacDetWin.Tag = AccionMnt.EliminarRegistro;
                    actualizarPrgFidelizacDetWin.ShowDialog();
                    MostrarInfoGrilla();
                }
                else
                {
                    MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

            private void frmActualizarProgramaFidelizacion_Load(object sender, EventArgs e)
            {
                MostrarInfoGrilla();
            }

            private void btnBuscar_Click(object sender, EventArgs e)
            {
                if (FiltroValido())
                {
                    MostrarInfoGrilla();
                }
            }

            private void btnImprimir_Click(object sender, EventArgs e)
            {
                // Prepara el DataSet para la vista previa
                dsProgramaFidelizacion dsProg = new dsProgramaFidelizacion();
                dsProg.dtProgramaFidelizacion.Merge(_dtImp);

                // Muestra el formulario de vista previa con el reporte
                VtasMkt.General.frmVerReporte verRptWin = new VtasMkt.General.frmVerReporte(dsProg);
                verRptWin.MdiParent = frmMain.ActiveForm;
                verRptWin.Show();
            }

        private void btnConsultar_Click(object sender, EventArgs e)
        {
            if (dgvMain.RowCount > 0)
            {
                Entidades.ProgramaFidelizacion programaFidelizacion = new ProgramaFidelizacion();
                programaFidelizacion.CodigoPrograma = (int)(this.dgvMain.SelectedRows[0].Cells[0].Value);
                programaFidelizacion.NombrePrograma = (string)(this.dgvMain.SelectedRows[0].Cells[1].Value);
                programaFidelizacion.PorcentajeDescuento = (int)(this.dgvMain.SelectedRows[0].Cells[2].Value);
                programaFidelizacion.FechaInicio = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[3].Value);
                programaFidelizacion.FechaFin = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[4].Value);
                programaFidelizacion.DescripcionPrograma = (string)(this.dgvMain.SelectedRows[0].Cells[5].Value);
                programaFidelizacion.SignoComparacionCriterio = (string)(this.dgvMain.SelectedRows[0].Cells[6].Value);
                programaFidelizacion.MontoCriterio = (decimal)(this.dgvMain.SelectedRows[0].Cells[7].Value);
                programaFidelizacion.FechaInicioCriterio = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[8].Value);
                programaFidelizacion.FechaFinCriterio = Convert.ToString(this.dgvMain.SelectedRows[0].Cells[9].Value);

                VtasMkt.Marketing.Fidelizacion.frmActualizarProgramaFidelizacionDet actualizarPrgFidelizacDetWin = new VtasMkt.Marketing.Fidelizacion.frmActualizarProgramaFidelizacionDet(programaFidelizacion);
                actualizarPrgFidelizacDetWin.Tag = AccionMnt.ConsultarRegistro;
                actualizarPrgFidelizacDetWin.ShowDialog();
            }
            else
            {
                MessageBox.Show("Se debe selecionar un registro.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        #endregion

        #region Metodos privados

        // Valida el filtro
        private bool FiltroValido()
        {
            VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();

            String fechaInicio = rutGen.FechaYYYYMMDD(dtpFechaInicio.Value);
            String fechaFin = rutGen.FechaYYYYMMDD(dtpFechaFin.Value);

            if (Convert.ToInt32(fechaInicio) > Convert.ToInt32(fechaFin))
            {
                MessageBox.Show("La fecha inicial no puede ser mayor a la fecha final", this.Text,
                    MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return false;
            }

            // Si todo esta ok
            return true;
        }

        // Obtiene y muestra la informacion en la grilla del formulario
        private void MostrarInfoGrilla()
        {
            try
            {
                VtasMkt.General.RutinasGenericas rutGen = new VtasMkt.General.RutinasGenericas();
                Negocio.Controladora.ActualizarProgramaFidelizacion actualizarProgramaFidelizacion = new Negocio.Controladora.ActualizarProgramaFidelizacion();

                string nombrePrograma = txtDescripcionPrograma.Text;
                string fechaInicio = rutGen.FechaYYYYMMDD(this.dtpFechaInicio.Value);
                string fechaFin = rutGen.FechaYYYYMMDD(this.dtpFechaFin.Value);

                DataTable dtInfo = actualizarProgramaFidelizacion.ListarProgramaFidelizacion(nombrePrograma, fechaInicio, fechaFin);
                dgvMain.DataSource = dtInfo;

                _dtImp = dtInfo;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, this.Text);
            }
        }
        #endregion        
    }

}